﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Arthus.IzlazniRacun
{
    public partial class izlazniRacunForma : Form
    {
        public static int IDzaglavlja;
        public static int idPartnera;
        private string mestoIzdavanjaRacuna { get; set; }
        private string datumIzdavanjaRacuna { get; set; }
        private string mestoPrometaDobara { get; set; }
        private string datumPrometaDobara { get; set; }
        private string odgovornoLice { get; set; }
        private string odgovornoLice2 { get; set; }
        private string napomenaOPoreskomOslobodjenju { get; set; }
        private string nacinIsporuke { get; set; }
        private string napomena { get; set; }
        private string napomena2 { get; set; }

        public izlazniRacunForma(int idz, int idp)
        {
            InitializeComponent();
            IDzaglavlja = idz;
            idPartnera = idp;
            posjedObjekat = new Posjed();
            checkBoxAutoBrojDokumenta.Checked = true;
            posjedObjekat.PopuniComboBoxVeleprodaja(comboBoxProdajnaJedinica);
            mestoIzdavanjaRacuna = Properties.Settings.Default.MestoIzdavanjaRacuna;
            datumIzdavanjaRacuna = System.DateTime.Now.ToString("yyyy-MM-dd");
            mestoPrometaDobara = Properties.Settings.Default.MestoPrometaDobara;
            datumPrometaDobara = System.DateTime.Now.ToString("yyyy-MM-dd");
            odgovornoLice = Properties.Settings.Default.OdgovornoLice;
            odgovornoLice2 = Properties.Settings.Default.OdgovornoLice2;
            napomenaOPoreskomOslobodjenju = Properties.Settings.Default.NapomenaOPoreskomOslobodjenju;
            nacinIsporuke = Properties.Settings.Default.NacinIsporuke;
            napomena = Properties.Settings.Default.Napomena;
            napomena2 = Properties.Settings.Default.Napomena2;
        }

        Posjed posjedObjekat = null;
        ZAG zagObjekat = null;
        Partneri partneriObjekat = null;
        STV stvObjekat = null;

        private void PromenaCheckBoxAutoBrojDokumenta()
        { //metoda koja menja vizibilnost textbox-ova automatskog broja dokumenta
            if (checkBoxAutoBrojDokumenta.Checked == true)
            {
                //ako je cekiran checkBoxAutoBrojDokumenta
                textBoxAutomatskiBrojDokumenta1.Enabled = false;
                textBoxAutomatskiBrojDokumenta2.Enabled = false;
            }
            else
            {
                //ako nije cekiran
                textBoxAutomatskiBrojDokumenta1.Enabled = true;
                textBoxAutomatskiBrojDokumenta2.Enabled = true;
            }
        }
        private void checkBoxAutoBrojDokumenta_CheckedChanged(object sender, EventArgs e)
        {
            PromenaCheckBoxAutoBrojDokumenta();
        }

        private void PromenaCheckBoxIzborPartnera()
        { //metoda koja menja vizibilnost textbox-ova automatskog broja dokumenta
            if (checkBoxIzborPartnera.Checked == true)
            {
                //ako je cekiran checkBoxAutoBrojDokumenta
                textBoxIzborPartnera.Enabled = true;
                textBoxSifraPartnera.Text = "";
                textBoxNazivPartnera.Text = "";
                textBoxMestoPartnera.Text = "";
            }
            else
            {
                //ako nije cekiran
                textBoxIzborPartnera.Enabled = false;
            }
        }
        private void checkBoxIzborPartnera_CheckedChanged(object sender, EventArgs e)
        {
            PromenaCheckBoxIzborPartnera();
        }

        public void ProveraProknjizenostiIzlaznogRacuna()
        {
            zagObjekat = new ZAG();
            if (IDzaglavlja == 0)
            {
                buttonUnesi.Enabled = true;
                buttonIzmeni.Enabled = false;
                buttonDodajStavku.Enabled = false;
                buttonIzmeniStavku.Enabled = false;
                buttonObrisiStavku.Enabled = false;
                buttonKnjizenje.Enabled = false;

                comboBoxProdajnaJedinica.Enabled = true;
                textBoxAutomatskiBrojDokumenta1.ReadOnly = false;
                textBoxAutomatskiBrojDokumenta2.ReadOnly = false;

                checkBoxAutoBrojDokumenta.Enabled = true;
                checkBoxIzborPartnera.Enabled = true;
                checkBoxObveznikPDV.Enabled = true;

                if (textBoxSifraPartnera.Text.Length <= 0)
                {
                    buttonUnesi.Enabled = false;
                }
                else
                {
                    buttonUnesi.Enabled = true;
                }
            }
            else if (zagObjekat.ProveraProknjizenDokumentIliNe(izlazniRacunForma.IDzaglavlja))
            {
                labelProknjizenIliNe.Text = "Izlazni račun je proknjižen";
                buttonUnesi.Enabled = false;
                buttonIzmeni.Enabled = false;
                buttonDodajStavku.Enabled = false;
                buttonIzmeniStavku.Enabled = false;
                buttonObrisiStavku.Enabled = false;
                buttonKnjizenje.Enabled = true;

                comboBoxProdajnaJedinica.Enabled = false;
                textBoxAutomatskiBrojDokumenta1.ReadOnly = true;
                textBoxAutomatskiBrojDokumenta2.ReadOnly = true;

                checkBoxAutoBrojDokumenta.Enabled = false;
                checkBoxIzborPartnera.Enabled = false;
                checkBoxObveznikPDV.Enabled = false;
            }
            else
            {
                labelProknjizenIliNe.Text = "Izlazni račun nije proknjižen";
                buttonUnesi.Enabled = false;
                buttonIzmeni.Enabled = true;
                buttonDodajStavku.Enabled = true;
                buttonIzmeniStavku.Enabled = true;
                buttonObrisiStavku.Enabled = true;
                buttonKnjizenje.Enabled = true;
                if (dataGridViewStavkeIzlaznogRacuna.RowCount <= 0)
                {
                    buttonDodajStavku.Enabled = true;
                    buttonIzmeniStavku.Enabled = false;
                    buttonObrisiStavku.Enabled = false;
                    buttonKnjizenje.Enabled = false;
                }
                checkBoxAutoBrojDokumenta.Enabled = true;
                checkBoxIzborPartnera.Enabled = true;
                checkBoxObveznikPDV.Enabled = true;
            }
        }

        private void buttonZatvori_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void izlazniRacunForma_FormClosing(object sender, FormClosingEventArgs e)
        {
            IDzaglavlja = 0;
        }

        private void izlazniRacunForma_Load(object sender, EventArgs e)
        {
            zagObjekat = new ZAG();
            zagObjekat.PopuniKontroleIzlaznogRacuna(dateTimePickerDatumUnosa, comboBoxProdajnaJedinica, textBoxAutomatskiBrojDokumenta1,
                textBoxAutomatskiBrojDokumenta2, textBoxPoDokumentu, dateTimePickerDatumDokumenta, dateTimePickerDatumDospeca, IDzaglavlja.ToString());
        }

        private void izlazniRacunForma_Activated(object sender, EventArgs e)
        {
            zagObjekat = new ZAG();
            zagObjekat.PopuniKontroleIzlaznogRacuna(dateTimePickerDatumUnosa, comboBoxProdajnaJedinica, textBoxAutomatskiBrojDokumenta1,
                textBoxAutomatskiBrojDokumenta2, textBoxPoDokumentu, dateTimePickerDatumDokumenta, dateTimePickerDatumDospeca, IDzaglavlja.ToString());
            partneriObjekat = new Partneri();
            partneriObjekat.PopuniKontrolePartnera(IzlazniRacun.izlazniRacunForma.idPartnera, textBoxSifraPartnera, textBoxNazivPartnera, textBoxMestoPartnera, checkBoxObveznikPDV);
            stvObjekat = new STV();
            stvObjekat.StavkeIzlaznogRacunaPopuniGridView(dataGridViewStavkeIzlaznogRacuna, zagObjekat.VratiMagacacinIDNaOsnovuZAGID(IDzaglavlja));
            stvObjekat.PopuniVrednostiZaPunjenjeTextBoxOvaIzlazniRacunForma(dataGridViewStavkeIzlaznogRacuna, textBoxVrednost, textBoxIznosRabata, textBoxOsnovicaPDV, 
                textBoxIznosPDV, textBoxUkupnoZaUplatu);
            ProveraProknjizenostiIzlaznogRacuna();
        }

        private void textBoxIzborPartnera_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                this.Cursor = Cursors.WaitCursor;
                partneriObjekat = new Partneri();
                partneriObjekat.PretragaPartneraKalkulacijaIzlazniRacun(textBoxIzborPartnera, textBoxSifraPartnera, textBoxNazivPartnera, textBoxMestoPartnera, checkBoxObveznikPDV);
                this.Cursor = Cursors.Default;
            }
            ProveraProknjizenostiIzlaznogRacuna();
            TABKaoENTER(e);
        }

        private void buttonUnesi_Click(object sender, EventArgs e)
        {
            zagObjekat = new ZAG();
            zagObjekat.UbaciUZAGzaVIR("VIR", dateTimePickerDatumUnosa, comboBoxProdajnaJedinica, textBoxAutomatskiBrojDokumenta1, textBoxAutomatskiBrojDokumenta2,
                textBoxPoDokumentu, dateTimePickerDatumDokumenta, dateTimePickerDatumDospeca, idPartnera, mestoIzdavanjaRacuna, datumIzdavanjaRacuna,
                mestoPrometaDobara, datumPrometaDobara, odgovornoLice, odgovornoLice2, napomenaOPoreskomOslobodjenju, nacinIsporuke, napomena, napomena2);
            ProveraProknjizenostiIzlaznogRacuna();
        }

        private void TABKaoENTER(KeyEventArgs e)
        {
            if (e.KeyData == Keys.Enter)
            {
                e.SuppressKeyPress = true;
                SelectNextControl(ActiveControl, true, true, true, true);
            }
        }
        private void dateTimePickerDatumUnosa_KeyDown(object sender, KeyEventArgs e)
        {
            TABKaoENTER(e);
        }
        private void comboBoxProdajnaJedinica_KeyDown(object sender, KeyEventArgs e)
        {
            TABKaoENTER(e);
        }
        private void textBoxPoDokumentu_KeyDown(object sender, KeyEventArgs e)
        {
            TABKaoENTER(e);
        }
        private void dateTimePickerDatumDokumenta_KeyDown(object sender, KeyEventArgs e)
        {
            TABKaoENTER(e);
        }
        private void dateTimePickerDatumDospeca_KeyDown(object sender, KeyEventArgs e)
        {
            TABKaoENTER(e);
        }

        private void buttonIzmeni_Click(object sender, EventArgs e)
        {
            zagObjekat = new ZAG();
            zagObjekat.IzmeniUZAGzaVIR("VIR", dateTimePickerDatumUnosa, comboBoxProdajnaJedinica, textBoxAutomatskiBrojDokumenta1, textBoxAutomatskiBrojDokumenta2,
                textBoxPoDokumentu, dateTimePickerDatumDokumenta, dateTimePickerDatumDospeca, idPartnera);
        }

        private void buttonDodajStavku_Click(object sender, EventArgs e)
        {
            stavkaIzlaznogRacuna obj = new stavkaIzlaznogRacuna(0, "");
            obj.ShowDialog();

            zagObjekat = new ZAG();
            zagObjekat.PopuniKontroleIzlaznogRacuna(dateTimePickerDatumUnosa, comboBoxProdajnaJedinica, textBoxAutomatskiBrojDokumenta1,
                textBoxAutomatskiBrojDokumenta2, textBoxPoDokumentu, dateTimePickerDatumDokumenta, dateTimePickerDatumDospeca, IDzaglavlja.ToString());
            obj.Dispose();
        }

        private void buttonIzmeniStavku_Click(object sender, EventArgs e)
        {
            stavkaIzlaznogRacuna obj = new stavkaIzlaznogRacuna(Convert.ToInt32(dataGridViewStavkeIzlaznogRacuna.SelectedRows[0].Cells[1].Value.ToString()),
                dataGridViewStavkeIzlaznogRacuna.SelectedRows[0].Cells[5].Value.ToString());
            obj.ShowDialog();
        }

        private void dataGridViewStavkeIzlaznogRacuna_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            stavkaIzlaznogRacuna obj = new stavkaIzlaznogRacuna(Convert.ToInt32(dataGridViewStavkeIzlaznogRacuna.SelectedRows[0].Cells[1].Value.ToString()),
                dataGridViewStavkeIzlaznogRacuna.SelectedRows[0].Cells[5].Value.ToString());
            obj.ShowDialog();
        }

        private void buttonKnjizenje_Click(object sender, EventArgs e)
        {
            zagObjekat = new ZAG();
            int finID = zagObjekat.VratiIDFINnalogaNaOsnovuZAGID(IDzaglavlja);
            if (zagObjekat.VratiVrstuZaglavljaNaOsnovuID(IDzaglavlja).Equals("VIR"))
            {
                this.Cursor = Cursors.WaitCursor;
                decimal iznosRabata = -Convert.ToDecimal(textBoxIznosRabata.Text);
                decimal osnovicaPDV = Convert.ToDecimal(textBoxOsnovicaPDV.Text);
                decimal iznosPDV = Convert.ToDecimal(textBoxIznosPDV.Text);
                decimal ukupnoZaUplatu = Convert.ToDecimal(textBoxUkupnoZaUplatu.Text);
                decimal zbirNivelacija = 0.00m;
                if (dataGridViewStavkeIzlaznogRacuna.RowCount > 0)
                {
                    for (int i = 0; i < dataGridViewStavkeIzlaznogRacuna.Rows.Count; i++)
                    {
                        zbirNivelacija += Convert.ToDecimal(dataGridViewStavkeIzlaznogRacuna.Rows[i].Cells[9].Value.ToString());
                    }
                }
                knjizenjeDokumenataForma knjizenjeIzlaznogRacunaFormaObjekat = new knjizenjeDokumenataForma(IDzaglavlja.ToString(), finID, iznosRabata, osnovicaPDV, iznosPDV,
                    ukupnoZaUplatu, zbirNivelacija, dateTimePickerDatumDokumenta.Value.ToString("yyyy-MM-dd"), dateTimePickerDatumDospeca.Value.ToString("yyyy-MM-dd"));
                knjizenjeIzlaznogRacunaFormaObjekat.ShowDialog();
                this.Cursor = Cursors.Default;
            }

        }

        private void buttonObrisiStavku_Click(object sender, EventArgs e)
        {
            stvObjekat = new STV();
            stvObjekat.ObrisiStavkuPremaID(Convert.ToInt32(dataGridViewStavkeIzlaznogRacuna.SelectedRows[0].Cells[1].Value.ToString()));
            MessageBox.Show("Stavka je uspešno obrisana ");
        }

        private void buttonStampanje_Click(object sender, EventArgs e)
        {
            if (dataGridViewStavkeIzlaznogRacuna.RowCount > 0)
            {
                zagObjekat = new ZAG();
                this.Cursor = Cursors.WaitCursor;


                this.Cursor = Cursors.Default;
            }
            else
            {
                MessageBox.Show("Morate imati neke stavke da bi ste štampali");
            }
        }

        private void textBoxAutomatskiBrojDokumenta1_KeyPress(object sender, KeyPressEventArgs e)
        {
            Razno.DozvoliSamoBrojeve(sender, e);
        }
        private void textBoxAutomatskiBrojDokumenta2_KeyPress(object sender, KeyPressEventArgs e)
        {
            Razno.DozvoliSamoBrojeve(sender, e);
        }
    }
}
